﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Web.DynamicData;
using System.Data.SqlClient;
using System.Globalization;
namespace sistemaAcademicoFinanceiroEscolas
{
    public partial class valorEspecialGrupoInsert : System.Web.UI.Page
    {
        protected MetaTable table;

        protected void Page_Init(object sender, EventArgs e)
        {
            DynamicDataManager1.RegisterControl(DetailsView1);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            table = DetailsDataSource.GetTable();
            Title = table.DisplayName;


            if (!Page.IsPostBack)
            {
                // Carregar grupos existentes e ativos

                SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqlc.Open();

                string sqlGrupo = "select * from grupo order by nomeGrupo";

                SqlCommand cmdGrupo = new SqlCommand(sqlGrupo, sqlc);
                SqlDataReader myReaderGrupo = cmdGrupo.ExecuteReader();

                ListItem GrupoSelecione = new ListItem();
                GrupoSelecione.Value = "0";
                GrupoSelecione.Text = "Selecione um Aluno";

                lstGrupo.Items.Add(GrupoSelecione);

                if (myReaderGrupo.HasRows)
                {

                    while (myReaderGrupo.Read())
                    {
                        ListItem Grupo = new ListItem();

                        Grupo.Value = myReaderGrupo["codigoGrupo"].ToString();
                        Grupo.Text = myReaderGrupo["nomeGrupo"].ToString();

                        lstGrupo.Items.Add(Grupo);
                    }

                }
                //Grupo carregados
                myReaderGrupo.Close();
                cmdGrupo.Dispose();

                // fechando conexão com o banco de dados
                sqlc.Close();
            }


        }

        protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
        {
            if (e.CommandName == DataControlCommands.CancelCommandName)
            {
                Response.Redirect(table.ListActionPath);
            }
        }

        protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
        {
            if (e.Exception == null || e.ExceptionHandled)
            {
                System.Data.SqlClient.SqlConnection sqlc = new System.Data.SqlClient.SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqlc.Open();

                System.Data.SqlClient.SqlConnection sqld = new System.Data.SqlClient.SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqld.Open();

                string sqlMax = "SELECT MAX(codigoValorEspecialGrupo) AS codigoValorEspecialGrupo FROM valorEspecialGrupo";

                System.Data.SqlClient.SqlCommand cmdPegar = new System.Data.SqlClient.SqlCommand(sqlMax, sqlc);
                System.Data.SqlClient.SqlDataReader drPegar = cmdPegar.ExecuteReader();
                drPegar.Read();

                string codigovalorGrupoMax = drPegar["codigoValorEspecialGrupo"].ToString();

                cmdPegar.Dispose();
                drPegar.Close();




                cmdPegar = new SqlCommand("UPDATE valorEspecialGrupo SET codigoGrupo = " + lstGrupo.SelectedValue + " WHERE codigoValorEspecialGrupo = " + codigovalorGrupoMax + "", sqlc);
                cmdPegar.ExecuteNonQuery();





                string sqlDatas = "SELECT * FROM valorEspecialGrupo where codigoValorEspecialGrupo = " + codigovalorGrupoMax;

                System.Data.SqlClient.SqlCommand cmdPegarDatas = new System.Data.SqlClient.SqlCommand(sqlDatas, sqlc);
                System.Data.SqlClient.SqlDataReader drPegarDatas = cmdPegarDatas.ExecuteReader();
                drPegarDatas.Read();

                string dataFinal = drPegarDatas["dataFinalValorEspecialGrupo"].ToString();
                string dataInicial = drPegarDatas["dataInicialValorEspecialGrupo"].ToString();
                string aulaValor = drPegarDatas["valorValorEspecialGrupo"].ToString();
                string codigoGrupo = drPegarDatas["codigoGrupo"].ToString();


                cmdPegarDatas.Dispose();
                drPegarDatas.Close();

                string sqlVerificarData = "SELECT * FROM valorEspecialGrupo WHERE codigoGrupo = " + codigoGrupo + " and codigoValorEspecialGrupo <> " + codigovalorGrupoMax;

                System.Data.SqlClient.SqlCommand cmdPegarVerificarData = new System.Data.SqlClient.SqlCommand(sqlVerificarData, sqlc);
                System.Data.SqlClient.SqlDataReader drPegarVerificarData = cmdPegarVerificarData.ExecuteReader();

                if (drPegarVerificarData.HasRows)
                {
                    while (drPegarVerificarData.Read())
                    {
                        string datasIniciais = drPegarVerificarData["dataInicialValorEspecialGrupo"].ToString();
                        string datasFinais = drPegarVerificarData["dataFinalValorEspecialGrupo"].ToString();
                        string codigoGrupos = drPegarVerificarData["codigoGrupo"].ToString();

                        if (Convert.ToDateTime(dataInicial) >= Convert.ToDateTime(datasIniciais) && Convert.ToDateTime(dataInicial) <= Convert.ToDateTime(datasFinais) && codigoGrupo == codigoGrupos)
                        {
                            string sqlDelDet = "delete from valorEspecialGrupo where codigoValorEspecialGrupo = " + codigovalorGrupoMax;

                            System.Data.SqlClient.SqlCommand del = new System.Data.SqlClient.SqlCommand(sqlDelDet, sqld);
                            del.ExecuteNonQuery();
                            del.Dispose();

                            Response.Redirect("Insert.aspx?erro=jaExiste");
                        }

                        if (Convert.ToDateTime(dataFinal) >= Convert.ToDateTime(datasIniciais) && Convert.ToDateTime(dataFinal) <= Convert.ToDateTime(datasFinais) && codigoGrupo == codigoGrupos)
                        {
                            string sqlDelDet = "delete from valorEspecialGrupo where codigoValorEspecialGrupo = " + codigovalorGrupoMax;

                            System.Data.SqlClient.SqlCommand del = new System.Data.SqlClient.SqlCommand(sqlDelDet, sqld);
                            del.ExecuteNonQuery();
                            del.Dispose();

                            Response.Redirect("Insert.aspx?erro=jaExiste");
                        }
                    }
                }


                cmdPegarVerificarData.Dispose();
                drPegarVerificarData.Close();

                DateTime Hoje = DateTime.Now;
                string dataAtual = Hoje.ToString("dd/MM/yyyy");

                if (dataFinal == "")
                {
                    dataFinal = dataAtual;
                }

                DateTime dataInicialC = DateTime.ParseExact(dataInicial, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);

                DateTime dataFinalC = DateTime.ParseExact(dataFinal, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);

                TimeSpan dif = Convert.ToDateTime(dataFinalC).Subtract(Convert.ToDateTime(dataInicialC));

                //Response.Write(" A subtração :  " + dif);

                //Response.End();


                if (dif.Days > 0)
                {

                    Response.Redirect(table.ListActionPath);
                }
                else
                {
                    string sqlDelDet = "delete from valorEspecialGrupo where codigoValorEspecialGrupo = " + codigovalorGrupoMax;

                    System.Data.SqlClient.SqlCommand del = new System.Data.SqlClient.SqlCommand(sqlDelDet, sqlc);
                    del.ExecuteNonQuery();
                    del.Dispose();

                    Response.Redirect("Insert.aspx?erro=dataMenor");
                }

                sqlc.Close();
                sqld.Close();

                Response.Redirect(table.ListActionPath);

            }
        }
    }
}
